Systems and methods for scaling an object

ABSTRACT

A computer-implemented method for scaling an object is described. Two or more lines are generated on a display of the mobile device. The user is imaged with a camera of the mobile device. The image of the user is displayed on the display of the mobile device. Upon determining the feature of the user aligns with the first of the two or more lines on the display of the mobile device, an image of the user is captured. A number of pixels per unit of distance are determined based at least in part on a number of pixels between a predetermined point on the captured image and the feature of the user, and a predetermined distance between a camera of the mobile device and the first of the two or more lines on the display.

RELATED APPLICATIONS

This application claims priority to U.S. Application No. 61/990,553,entitled SYSTEMS AND METHODS FOR SCALING AN OBJECT, filed on May 8,2014, which is incorporated herein in its entirety by this reference.

BACKGROUND

The use of computer systems and computer-related technologies continuesto increase at a rapid pace. This increased use of computer systems hasinfluenced the advances made to computer-related technologies. Indeed,computer systems have increasingly become an integral part of thebusiness world and the activities of individual consumers. Computershave opened up an entire industry of internet shopping. In many ways,online shopping has changed the way consumers purchase products. Forexample, a consumer may want to know what they will look like in and/orwith a product. On the webpage of a certain product, a photograph of amodel with the particular product may be shown. However, users may wantto see more accurate depictions of themselves in relation to variousproducts.

SUMMARY

According to at least one embodiment, a computer-implemented method forscaling an object is described. Two or more lines may be generated on adisplay of the mobile device. The user is imaged with a camera of themobile device. The image of the user may be displayed on the display ofthe mobile device. A user may be instructed to align a feature of theuser with a first of the two or more lines on the display. The featureof the user may include the eyes of the user. Upon determining thefeature of the user aligns with the first of the two or more lines onthe display of the mobile device, an image of the user may be captured.A number of pixels per unit of distance may be determined based at leastin part on a number of pixels between a predetermined point on thecaptured image and the feature of the user, and a predetermined distancebetween a camera of the mobile device and the first of the two or morelines on the display.

In one embodiment, a distance associated with the feature of the usermay be determined based on a product resulting from multiplying a numberof pixels associated with the feature of the user by the determinednumber of pixels per unit of distance in the captured image. A model ofthe user may be scaled based on the determined distance associated withthe feature of the user.

In one embodiment, when the feature of the user aligns with a second ofthe two or more lines on the display of the mobile device may bedetermined. Upon determining the feature of the user aligns with thesecond of the two or more lines on the display of the mobile device, asecond image of the user may be captured. A correction value may bedetermined based on an equivalency between calculating a distanceassociated with the feature of the user in the captured image andcalculating a distance associated with the feature of the user in thesecond captured image. A model of the user may be scaled based on thedetermined correction value.

A computing device configured to scale an object is also described. Thedevice may include a processor and memory in electronic communicationwith the processor. The memory may store instructions that areexecutable by the processor to generate two or more lines on a displayof the mobile device, instruct a user to align a feature of the userwith a first of the two or more lines on the display, and upondetermining the feature of the user aligns with the first of the two ormore lines on the display of the mobile device, capture an image of theuser. The memory may store instructions executable by the processor todetermine a number of pixels per unit of distance based on a number ofpixels between a predetermined point on the captured image and thefeature of the user.

A computer-program product to scale an object is also described. Thecomputer-program product may include a non-transitory computer-readablemedium that stores instructions. The instructions may be executable by aprocessor to generate two or more lines on a display of the mobiledevice, instruct a user to align a feature of the user with a first ofthe two or more lines on the display, and upon determining the featureof the user aligns with the first of the two or more lines on thedisplay of the mobile device, capture an image of the user. Theinstructions may be executable by the processor to determine a number ofpixels per unit of distance based on a number of pixels between apredetermined point on the captured image and the feature of the user.

Features from any of the above-mentioned embodiments may be used incombination with one another in accordance with the general principlesdescribed herein. These and other embodiments, features, and advantageswill be more fully understood upon reading the following detaileddescription in conjunction with the accompanying drawings and claims.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings illustrate a number of exemplary embodimentsand are a part of the specification. Together with the followingdescription, these drawings demonstrate and explain various principlesof the instant disclosure.

FIG. 1 is a block diagram illustrating one embodiment of an environmentin which the present systems and methods may be implemented;

FIG. 2 is a block diagram illustrating another embodiment of anenvironment in which the present systems and methods may be implemented;

FIG. 3 is a block diagram illustrating one example of a scaling module;

FIG. 4 is a diagram illustrating one example of a user capturing animage for use in the systems and methods described herein;

FIG. 5 is a diagram illustrating an example arrangement of a device forcapturing an image of the user for use in the systems and methodsdescribed herein;

FIG. 6 is a diagram illustrating an example arrangement of a device forcapturing an image of the user for use in the systems and methodsdescribed herein;

FIG. 7 is a flow diagram illustrating one example of a method forcapturing an image of a user in relation to a line generated on adisplay of a mobile device;

FIG. 8 is a flow diagram illustrating one example of a method forscaling a model of a user;

FIG. 9 is a flow diagram illustrating another example of a method toscale a 3D model; and

FIG. 10 depicts a block diagram of a computer system suitable forimplementing the present systems and methods.

While the embodiments described herein are susceptible to variousmodifications and alternative forms, specific embodiments have beenshown by way of example in the drawings and will be described in detailherein. However, the exemplary embodiments described herein are notintended to be limited to the particular forms disclosed. Rather, theinstant disclosure covers all modifications, equivalents, andalternatives falling within the scope of the appended claims.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

In various situations, it may be desirable to scale an object. Forexample, it may be desirable to scale a two-dimensional (2D) modeland/or image of a user. Likewise, it may be desirable to scale athree-dimensional (3D) model of a user so that two or more 3D models maybe mated and scaled according to a common scale. For instance, thesystems and methods described herein may allow for proper scaling of 3Dmodels when virtually tying-on products (e.g., virtually trying-on apair of glasses). Accordingly, a scaled 3D model of the user may bemated with a scaled 3D model of a pair of glasses. Although examplesused herein may describe the scaling of a user and/or a pair of glasses,it is understood that the systems and methods described herein may beused to scale a model of any object.

FIG. 1 is a block diagram illustrating one embodiment of an environment100 in which the present systems and methods may be implemented. In someembodiments, the systems and methods described herein may be performedon a single device (e.g., device 105). For example, the systems andmethod described herein may be performed by a scaling module 115 that islocated on the device 105. Examples of device 105 include mobiledevices, smart phones, personal computing devices, computers, servers,etc.

In some configurations, a device 105 may include the scaling module 115,a camera 120, and a display 125. In one example, the device 105 may becoupled to a database 110. In one embodiment, the database 110 may beinternal to the device 105. In another embodiment, the database 110 maybe external to the device 105. In some configurations, the database 110may include model data 130.

In one embodiment, the scaling module 115 may scale a model of a user.In one example, scaling a 3D model of a user enables the user to view animage on the display 125 of the scaled, 3D model of the user in relationto another 3D object. For instance, the image may depict a uservirtually trying-on a pair of glasses with both the user and the glassesbeing scaled according to a common scaling standard determined byscaling module 115.

In some configurations, the scaling module 115 may obtain one or moreimages of the user in relation to one or more lines generated and shownby scaling module on display 125. Scaling module 115 may store scalinginformation in database 110. Thus, model data 130 may include scalinginformation determined by scaling module 115, image data captured bycamera 120, information and data regarding a model of a user,information and data regarding a model of one or more objects,information regarding the position of the one or more lines generatedand shown by scaling module 115 on display 120, and algorithms used byscaling module 115 to determine one or more distances in a particularunit of distance associated with an image of a user captured by camera120.

Accordingly, in one embodiment, the 3D model of an object and/or usermay be obtained based on the model data 130. In one example, the modeldata 130 may be based on an average model that may be adjusted accordingto measurement information determined about the object (e.g., amorphable model approach). In one example, the 3D model of the objectand/or user may be a linear combination of the average model. In someembodiments, the model data 130 may include one or more definitions ofcolor (e.g., pixel information) for the 3D model. In one example, the 3Dmodel may have an arbitrary size. In some embodiments, the scaled 3Dmodel (as scaled by the systems and methods described herein, forexample) may be stored in the model data 130. In some cases, anrendered, two-dimensional image based on the scaled 3D model may bedisplayed via the display 125. For example, an image of a virtual try-onbased on the scaled 3D representation of a user and a 3D model ofglasses scaled according to determined scaling may be displayed ondisplay 125.

FIG. 2 is a block diagram illustrating another embodiment of anenvironment 200 in which the present systems and methods may beimplemented. In some embodiments, a device 105-a may communicate with aserver 210 via a network 205. Examples of networks 205 include localarea networks (LAN), wide area networks (WAN), virtual private networks(VPN), cellular networks (using 3G and/or LTE, for example), etc. Insome configurations, the network 205 may be the internet. In someconfigurations, the device 105-a may be one example of the device 105illustrated in FIG. 1. For example, the device 105-a may include thecamera 120, the display 125, and an application 215. It is noted that insome embodiments, the device 105-a may not include a scaling module 115.

In some embodiments, the server 210 may include the scaling module 115.In one embodiment, the server 210 may be coupled to the database 110.For example, the scaling module 115 may access the model data 130 in thedatabase 110 via the server 210. The database 110 may be internal orexternal to the server 210.

In some configurations, the application 215 may capture one or moreimages via camera 120. In one embodiment, upon capturing the image, theapplication 215 may transmit the captured image to the server 210. Insome cases, the scaling module 115 may obtain the image and may generatea scaled 3D model of the user as describe above and as will be describedin further detail below. In one example, the scaling module 115 maytransmit scaling information and/or information based on the scaled 3Dmodel of the user to the device 105-a. In some configurations, theapplication 215 may obtain the scaling information and/or informationbased on the scaled 3D model of the object and may output an image basedon the scaled 3D model of the object to be displayed via the display125.

FIG. 3 is a block diagram illustrating one example of a scaling module115-a. The scaling module 115-a may be one example of the scaling module115 illustrated in FIG. 1 or 2. The scaling module 115-a may includeline generation module 305, determination module 310, image capturingmodule 315, pixel ratio module 320, measuring module 325, scaling module330, scale correcting module 335.

In one embodiment, line generation module 305 may generate two or morelines on a display of the mobile device. For example, line generationmodule 305 may generate three lines on a display of the mobile device.Thus, line generation module 305 may generate a first line towards thetop of the screen, a second line below the first line, and a third linebelow the first and second lines. Determination module 310 may determinewhen a feature of a user aligns with a first line generated on thedisplay of the mobile device. In some cases, scaling module 115-a mayprompt the user to align their eyes with a line generated and displayedon the screen of a mobile device. In response, the user may indicatewhen the feature of the user is aligned with the generated line. Thefeature of the user may include a distance between two points on theuser's face. For example, the feature may include the eyes or pupils ofthe user. Accordingly, in some embodiments, scaling module 115-a maydetermine that the user's eyes are aligned with the generated line whenthe user presses a button (e.g., the user presses an “OK” button). Upondetermining the feature of the user aligns with the first line generatedon the display of the mobile device, image capturing module 315, inconjunction with a camera on the mobile device, may capture an image ofthe user. Accordingly, with the eyes being the feature of the user, thelocation of the user's eyes in the captured image of the user may beassociated with the location of the first line on the display todetermine a distance between the user's eyes and/or to scale a model ofthe user.

In one embodiment, pixel ratio module 320 may determine a number ofpixels per unit of distance in the captured image of the user based on anumber of pixels between a predetermined point on the captured image andthe feature of the user, and a predetermined distance between afront-facing camera of the mobile device and one or more of the linesgenerated on the display. For example, on a mobile device with a screensize of 768 pixels horizontally, 1024 pixels vertically, the mobiledevice may be held in a portrait orientation with the front-facingcamera located at the top of the mobile device, the top row of pixels onthe screen being the 1-row of pixels and the bottom row of pixels beingthe 1024-row of pixels. A first line may be generated on the screen maybe 265 pixels down from the top of the screen. In some cases, each linegenerated on the screen may include two or more pixels. Thus, a linethree pixels wide may be centered at the 265-row of 1024 pixels. Whenthe determination module 310 detects that the user's eyes are alignedwith the first line, image capturing module 315 may capture an image.The distance between the camera and each line may be a predetermineddistance accessible to the scaling module 115-a. Assuming the center ofthe front-facing camera is located one-half inch (½-in) above the 1-rowof 1024 pixels, the line generated on the screen may be approximatelytwo and one-half inches (2½″) below the center of the camera based on apixel density of 132 pixels per inch. Taking the difference between the1-row of 1024 pixels and the 265-row of 1024 pixels, being 264 pixels,and converting this difference of 264 pixels by 132 pixels per inchgives 2 inches between the 1-row and the 265-row of 1024 pixels. Addingthe one-half inch distance between the 1-row of 1024 pixels and thecamera gives a total distance of two and one-half inches.

The pixel ratio module 320 may determine that the eyes of the user in acaptured image of the user are located X number of pixels down from thecenter of the field of view of the camera when the image is capturedwith the mobile device held in a vertical orientation against a verticalwall, the X number of pixels being determined by the resolution of thecamera. Knowing that the eyes of the user should be approximately twoand one-half inches down from the distance from the center of the fieldof view of the camera in the image, the pixel ratio module 320 maydetermine that the pixel per unit distance ratio (pixels per inch inthis case) of those pixels used to compose the image of the user is thequotient of the X number of pixels divided by the two and one-halfinches.

Based on this determined pixel ratio, any distance between two point onthe face of the user (e.g., distance between the user's eyes) may bedetermined. Accordingly, measuring module 325 may determine the distanceassociated with the feature of the user based on a product of a numberof pixels associated with the feature of the user and the determinednumber of pixels per unit of distance in the captured image determinedby the pixel ratio module 320. In other words, the measuring module 325may convert the number of pixels in the image between the user's eyesinto a particular unit of distance (e.g., inches, millimeters, etc.)based on the determined pixels ratio. Scaling module 330 may scale amodel of the user (e.g., 3D model and/or 2D image of the user) based onthe determined distance associated with the feature of the user.

In one embodiment, determination module 310 may determine when thefeature of the user aligns with a second line generated on the displayof the mobile device. The second line may be positioned at a row ofpixels below the first line. Upon determining the feature of the useraligns with the second of the two or more lines generated and shown onthe display of the mobile device, image capturing module 315 may capturea second image of the user.

In some embodiments, scale correcting module 335 may determine acorrection value based on an equivalency between calculating a distanceassociated with the feature of the user in a first captured image andcalculating a distance associated with the feature of the user in asecond captured image, and so forth (i.e., third and fourth capturedimages, etc.). Scaling module 330 may scale a model of the user based onthe determined correction value.

FIG. 4 is a diagram 400 illustrating an example of a device 105-b forcapturing an image of the user. The device 105-b may be one example ofthe devices 105 illustrated in FIG. 1 or 2. As depicted, the device105-b may include a camera 120-a, a display 125-a, and an application215-a. The camera 120-a, display 125-a, and application 215-a may eachbe an example of the respective camera 120, display 125, and application215 illustrated in FIG. 1 or 2.

In one embodiment, the scaling module 115 may generate a first line 415and a second line 420 on the display 125-a of device 105-b. In oneembodiment, the depiction of user 405 may be a reflection of the user onthe surface of display 125-a, or an image being generated by a camera120-a. Accordingly, the user may align an image of the user 405 indisplay 125-a with the first line 415. Upon determining the user isaligning the image of the user's eyes 405 with first line 415, scalingmodule 115 may capture an image of the user. Additionally, oralternatively, upon determining the user aligning the reflection of theuser's eyes 405 with second line 420, scaling module 115 may capture animage of the user. Thus, in some embodiments, scaling module 115 maycapture two or more images of the user, a first image with the useraligning his or her reflection 405 with first line 415 and a secondimage with the user aligning his or her reflection 405 with second line420, and so forth.

In some embodiments, the depiction of user 405 may be a real-timecapture of user via camera 120-a, the display 125-a showing a continuouslive feed of the user captured by camera 120-a. Accordingly, the usermay align the real-time capture of the user 405 with the first line 415.Upon determining the user is aligning the real-time capture of theuser's eyes 405 with first line 415, scaling module 115 mayautomatically capture an image of the user. Additionally, oralternatively, upon determining the user aligning the real-time captureof the user's eyes 405 with second line 420, scaling module 115 mayautomatically capture an image of the user. Thus, in some embodiments,scaling module 115 may automatically capture two or more images of theuser, a first image with the user aligning his or her real-time capture405 with first line 415 and a second image with the user aligning his orher real-time capture 405 with second line 420, and so forth.

Accordingly, scaling module 115 may use information associated with thedistance 410 between the camera 120-a and the first line 415 and thedistance 425 between camera 120-a and the second line 420 to determine asize of a feature of the user (e.g., distance between the pupils, etc.).Scaling module 115 may use this determined size information to scale amodel of the user in relation to one or more other objects.

FIG. 5 is a diagram illustrating an example arrangement 500 of a device105-c for capturing an image 535 of a user 525 for use in the systemsand methods described herein. Device 105-c may be one example of device105 in FIGS. 1, 2, and/or 4. In particular, the arrangement 500 depictsa side view 505 of the device 105-c capturing an image of the user 525and a front view 530 of a resulting image of the user 535. The side view505 depicts the field of view 510 of a front-facing camera of the device105-c. The dotted line 515 depicts the center of the field of view 510and the dotted line 520 depicts the vertical position of a horizontalline generated on the screen of device 105-c (e.g., a first line 415, asecond line 420, etc.) relative to device 105-c positioned verticallyagainst a wall in a portrait or landscape mode. As described above, thescaling module 115 captures an image of user 525 (e.g., image 535) whena feature of the user 525 (e.g., the eyes of user 525) aligns with aline generated and displayed on the screen of device 105-c.

The front view 530 depicts the captured image 535 of user 525, beingcaptured when the eyes of user 525 aligned with the position 520 of theline generated and displayed on the screen of device 105-c. Although thefront view 530 depicts several dotted lines in association with theimage 535, in some embodiments, the dotted lines are depicted fordescription purposes. For example, the distance 540 depicts the distancebetween the eyes of user 525 depicted in image 535 and the center 515 ofthe field of view 510 of the camera of device 105-c. In someembodiments, the distance 540 is a predetermined value. For example,assuming the position 520 of the generated line depicts the first line,the first line may be placed 3 inches (about 76.2 mm) below the center515 of the field of view 510 of the camera.

Assuming V_(mm) represents the distance 540 in millimeters, V_(px)represents the number of pixels within distance 540, P_(mm) representsthe distance 535 in millimeters, and P_(px) represents the number ofpixels within distance 545, then the ratio (V_(mm)/V_(px)) would beequivalent to the ratio (P_(mm)/P_(px)), as each ratio describes thepixel density at relatively the same depth in the captured image. SinceV_(mm) is predetermined and both V_(px) and P_(px) are each obtained bycounting pixels in image 535, it follows that the only unknown value ofthe four values is P_(mm). Thus, P_(mm) may be determined by solvingequation 1 (Eq. 1).

$\begin{matrix}{P_{m\; m} = {P_{px} \star \frac{v_{m\; m}}{V_{px}}}} & \left( {{Eq}.\mspace{11mu} 1} \right)\end{matrix}$

Accordingly, scaling module 115 may determine the pixel to inches ratioand/or pixels to millimeters ratio for the feature of the user. Sincethe depth of the eyes is relatively the same as the forehead of theuser, the determined pixel ratio may be used to determine the distancebetween the user's eyes. For example, assuming the distance 540 ispredetermined to be 3 inches, and assuming the scaling module 115determines there are 300 pixels between the center 515 of the field ofview 510 and the position 520 of the line generated on the display ofdevice 105-c, then scaling module 115 may determine that there areapproximately 100 pixels per inch (about 3.937 pixels per mm) relativeto the area in the image at the same depth as the eyes and forehead ofthe user in image 535. Scaling module 115 may determine there are 275pixels between the pupils of the user in image 535. Based on the 100pixels per inch approximation, scaling module 115 may determine thatdistance 545 is 2.75 inches, or about 70 mm. Accordingly, scaling module115 may scale an image and/or model of user 525 (e.g., 3D model) basedon the approximated distance between the user's pupils.

FIG. 6 is a diagram illustrating an example arrangement 600 of a device105-d for capturing an image of the user 525 for use in the systems andmethods described herein. The arrangement 600 depicts a side view ofdevice 105-d. Device 105-d may be one example of device 105 in FIGS. 1,2, 4, and/or 5. The arrangement 600 also depicts a front view of animage 535 captured by a camera of device 105-c. As described above, thescaling module 115 may capture an image of user 525. However, asdepicted in arrangement 600, the field of view 610 of the camera (e.g.,vertical window field of view and/or horizontal window field of view)may be skewed as a result of the camera not being placed perfectly flatin device 105-c. For example, the camera may be placed such that thedirection of a ray emitted from the horizontal and vertical center ofthe camera's field of view would not be orthogonal to the surface of thescreen of the camera. Thus, the position of the camera on the mobiledevice may be skewed, resulting in potential errors in the approximationof distances relative to image 630. Scaling module 115, however, mayadjust for the skew of a camera to more accurately scale an image/modelof a user, as described below.

Assuming P1 _(mm) represents the pupil distance of the user in a firstimage (e.g., image 630), that P1 _(px) represents the number of pixelsbetween the pupils of the user in the first image, V1 _(mm) representsthe distance between the generated line and the center of the camera'sfield of view, V1 _(px) represents the number of pixels between thegenerated line and the center of the camera's field of view, and Δrepresents distance 635, in one embodiment, distance 635 may represent acorrection value. Scaling module 115 may use the correction value 635 tocorrect an approximation of the distance P1 _(mm) associated with thefeature of the user (e.g., distance 545). Accordingly, the distance P1_(mm) may be determined by solving equation 2 (Eq. 2).

$\begin{matrix}{{P\; 1_{m\; m}} = {{P\; 1_{p\; x}} \star \frac{V\; 1_{m\; m}}{{V\; 1_{px}} + \Delta}}} & \left( {{Eq}.\mspace{11mu} 2} \right)\end{matrix}$

Assuming P2 _(mm) represents the pupil distance of the user in a secondimage (e.g., image 630), that P2 _(px) represents the number of pixelsbetween the pupils of the user in the first image, V2 _(mm) representsthe distance between the generated line and the center of the camera'sfield of view, V2 _(px) represents the number of pixels between thegenerated line and the center of the camera's field of view, and Arepresents distance 635, in one embodiment, distance 635 may represent acorrection value. Scaling module 115 may use the correction value 635 tocorrect an approximation of the distance P2 _(mm) associated with thefeature of the user (e.g., distance 545). Accordingly, the distance P2_(mm) may be determined by solving equation 3 (Eq. 3).

$\begin{matrix}{{P\; 2_{m\; m}} = {{P\; 2_{p\; x}} \star \frac{V\; 2_{m\; m}}{{V\; 2_{px}} + \Delta}}} & \left( {{Eq}.\mspace{11mu} 3} \right)\end{matrix}$

However, both Eq. 2 and Eq. 3 contain the same unknown value, A, whichrepresents correction value distance 635 induced by the skew of acamera. Since both P1 _(mm) and P2 _(mm) each represent the samedistance, which is the distance between the feature of the user (e.g.,the user's pupil distance, etc.), it follows that Eq. 2 is equivalent toEq. 3. Thus, a scale correction value, A, may be determined based on anequivalency between calculating a distance associated with the featureof the user in a first captured image and calculating a distanceassociated with the feature of the user in a second captured image.Scaling module 330 may scale a model of the user based on the determinedcorrection value, Δ. Accordingly, Δ may be determined by setting Eq. 2equal to Eq. 3 and then solving for Δ, as shown in equation 4 (Eq. 4).

$\begin{matrix}{\Delta = \frac{{P\; 2_{px}V\; 2_{m\; m}V\; 1_{px}} - {P\; 1_{px}V\; 1_{m\; m}V\; 2_{px}}}{{P\; 1_{px}V\; 1_{m\; m}} - {P\; 2_{px}V\; 2_{m\; m}}}} & \left( {{Eq}.\mspace{11mu} 4} \right)\end{matrix}$

Accordingly, knowing the value for A, the scaling module 115 maydetermine the values of P1 _(mm) and P2 _(mm). In the case of anyvariation between the values determined for P1 _(mm) and P2 _(mm),respectively, in some embodiments, an average of the determined valuesmay be used to correct the scale.

FIG. 7 is a flow diagram illustrating one example of a method 700 forcapturing an image of a user in relation to a line generated on adisplay of a mobile device. In some configurations, the method 700 maybe implemented by the scaling module 115 illustrated in FIG. 1, 2, or 3.

At block 705, two or more lines on a display of the mobile device may begenerated via a processor of a mobile device. In some embodiments, auser may be instructed to align a feature of the user with a first ofthe two or more lines on the display. The feature of the user mayinclude a distance between two points on the user's face. For example,the feature may include the eyes of the user.

In some embodiments, scaling module 115 may instruct a user to hold amobile device vertically against a vertical surface (e.g., wall, mirror,etc.), to align a reflection of the user's eyes on the surface of ascreen of the mobile device with a line generated and shown on thescreen, and for the user to indicate when the eyes are aligned. In someembodiments, scaling module 115 may determine when a real-time,continuous capture of the user displayed on a screen of a mobile deviceindicates a detectable feature of the user aligning with a linegenerated and shown on the screen. At block 710, upon determining thefeature of the user aligns with the first of the two or more lines onthe display of the mobile device, an image of the user may be captured.

FIG. 8 is a flow diagram illustrating another example of a method 800for scaling a model of a user. In some configurations, the method 800may be implemented by the scaling module 115 illustrated in FIG. 1, 2,or 3.

At block 805, a number of pixels per unit of distance may be determinedbased on a number of pixels between a predetermined point on thecaptured image and the feature of the user, and a predetermined distancebetween a camera of the mobile device and a line generated on a displayof the mobile device. At block 810, a distance associated with thefeature of the user may be determined based on a product resulting frommultiplying a number of pixels associated with the feature of the userby the determined number of pixels per unit of distance in the capturedimage. At block 815, a model of the user may be scaled based on thedetermined distance associated with the feature of the user.

FIG. 9 is a flow diagram illustrating another example of a method 900for generating a correction value used to scale a model of a user. Insome configurations, the method 900 may be implemented by the scalingmodule 115 illustrated in FIG. 1, 2, or 3.

At block 905, a first image of a user may be captured upon determining afeature of a user aligns with a first line generated on a display of amobile device. At block 910, a second image of a user may be capturedupon determining the feature of the user aligns with a second linegenerated on the display of the mobile device. At block 915, acorrection value may be determined based on an equivalency betweencalculating a distance associated with the feature of the user in thefirst captured image and calculating a distance associated with thefeature of the user in the second captured image. At block 920, a modelof the user may be scaled based on the determined correction value.

FIG. 10 depicts a block diagram of a computer system 1000 suitable forimplementing the present systems and methods. For example, the computersystem 1000 may be suitable for implementing the device 105 illustratedin FIG. 1, 2, or 6 and/or the server 210 illustrated in FIG. 2. Computersystem 1000 includes a bus 1005 which interconnects major subsystems ofcomputer system 1000, such as a central processor 1010, a system memory1015 (typically RAM, but which may also include ROM, flash RAM, or thelike), an input/output controller 1020, an external audio device, suchas a speaker system 1025 via an audio output interface 1030, an externaldevice, such as a display screen 1035 via display adapter 1040, akeyboard 1045 (interfaced with a keyboard controller 1050) (or otherinput device), multiple universal serial bus (USB) devices 1055(interfaced with a USB controller 1060), and a storage interface 1065.Also included are a mouse 1075 (or other point-and-click device)interfaced through a serial port 1080 and a network interface 1085(coupled directly to bus 1005).

Bus 1005 allows data communication between central processor 1010 andsystem memory 1015, which may include read-only memory (ROM) or flashmemory (neither shown), and random access memory (RAM) (not shown), aspreviously noted. The RAM is generally the main memory into which theoperating system and application programs are loaded. The ROM or flashmemory can contain, among other code, the Basic Input-Output system(BIOS) which controls basic hardware operation such as the interactionwith peripheral components or devices. For example, the scaling module115-b to implement the present systems and methods may be stored withinthe system memory 1015. Applications (e.g., application 215) residentwith computer system 1000 are generally stored on and accessed via anon-transitory computer readable medium, such as a hard disk drive(e.g., fixed disk 1070) or other storage medium. Additionally,applications can be in the form of electronic signals modulated inaccordance with the application and data communication technology whenaccessed via interface 1085.

Storage interface 1065, as with the other storage interfaces of computersystem 1000, can connect to a standard computer readable medium forstorage and/or retrieval of information, such as a fixed disk drive1044. Fixed disk drive 1044 may be a part of computer system 1000 or maybe separate and accessed through other interface systems. Networkinterface 1085 may provide a direct connection to a remote server via adirect network link to the Internet via a POP (point of presence).Network interface 1085 may provide such connection using wirelesstechniques, including digital cellular telephone connection, CellularDigital Packet Data (CDPD) connection, digital satellite dataconnection, or the like.

Many other devices or subsystems (not shown) may be connected in asimilar manner (e.g., document scanners, digital cameras, and so on).Conversely, all of the devices shown in FIG. 10 need not be present topractice the present systems and methods. The devices and subsystems canbe interconnected in different ways from that shown in FIG. 10. Theoperation of a computer system such as that shown in FIG. 10 is readilyknown in the art and is not discussed in detail in this application.Code to implement the present disclosure can be stored in anon-transitory computer-readable medium such as one or more of systemmemory 1015 or fixed disk 1070. The operating system provided oncomputer system 1000 may be iOS®, MS-DOS®, MS-WINDOWS®, OS/2®, UNIX®,Linux®, or another known operating system.

While the foregoing disclosure sets forth various embodiments usingspecific block diagrams, flowcharts, and examples, each block diagramcomponent, flowchart step, operation, and/or component described and/orillustrated herein may be implemented, individually and/or collectively,using a wide range of hardware, software, or firmware (or anycombination thereof) configurations. In addition, any disclosure ofcomponents contained within other components should be consideredexemplary in nature since many other architectures can be implemented toachieve the same functionality.

The process parameters and sequence of steps described and/orillustrated herein are given by way of example only and can be varied asdesired. For example, while the steps illustrated and/or describedherein may be shown or discussed in a particular order, these steps donot necessarily need to be performed in the order illustrated ordiscussed. The various exemplary methods described and/or illustratedherein may also omit one or more of the steps described or illustratedherein or include additional steps in addition to those disclosed.

Furthermore, while various embodiments have been described and/orillustrated herein in the context of fully functional computing systems,one or more of these exemplary embodiments may be distributed as aprogram product in a variety of forms, regardless of the particular typeof computer-readable media used to actually carry out the distribution.The embodiments disclosed herein may also be implemented using softwaremodules that perform certain tasks. These software modules may includescript, batch, or other executable files that may be stored on acomputer-readable storage medium or in a computing system. In someembodiments, these software modules may configure a computing system toperform one or more of the exemplary embodiments disclosed herein.

The foregoing description, for purpose of explanation, has beendescribed with reference to specific embodiments. However, theillustrative discussions above are not intended to be exhaustive or tolimit the invention to the precise forms disclosed. Many modificationsand variations are possible in view of the above teachings. Theembodiments were chosen and described in order to best explain theprinciples of the present systems and methods and their practicalapplications, to thereby enable others skilled in the art to bestutilize the present systems and methods and various embodiments withvarious modifications as may be suited to the particular usecontemplated.

Unless otherwise noted, the terms “a” or “an,” as used in thespecification and claims, are to be construed as meaning “at least oneof.” In addition, for ease of use, the words “including” and “having,”as used in the specification and claims, are interchangeable with andhave the same meaning as the word “comprising.” In addition, the term“based on” as used in the specification and the claims is to beconstrued as meaning “based at least upon.”

What is claimed is:
 1. A computer-implemented method for scaling animage of a user, the method comprising: generating, via a processor of amobile device, two or more lines on a display of the mobile device;imaging the user with a camera of the mobile device, wherein the imageof the user is displayed on the display of the mobile device; upondetermining a feature of the user aligns with the first of the two ormore lines on the display of the mobile device, capturing, via theprocessor, an image of the user; and determining, via the processor, anumber of pixels per unit of distance based at least in part on: (i) anumber of pixels between a predetermined point on the captured image andthe feature of the user; and (ii) a predetermined distance between acamera of the mobile device and the first of the two or more lines onthe display.
 2. The method of claim 1, further comprising: determining,via the processor, a distance associated with the feature of the userbased on a product resulting from multiplying a number of pixelsassociated with the feature of the user by the determined number ofpixels per unit of distance in the captured image.
 3. The method ofclaim 2, further comprising: scaling, via the processor, a model of theuser based on the determined distance associated with the feature of theuser.
 4. The method of claim 1, further comprising: instructing, via theprocessor, a user to align a feature of the user with a second of thetwo or more lines on the display; and upon determining the feature ofthe user aligns with the second of the two or more lines on the displayof the mobile device, capturing, via the processor, a second image ofthe user.
 5. The method of claim 4, further comprising: determining, viathe processor, a correction value based on an equivalency betweencalculating a distance associated with the feature of the user in thecaptured image and calculating a distance associated with the feature ofthe user in the second captured image.
 6. The method of claim 5, furthercomprising: scaling, via the processor, a model of the user based on thedetermined correction value.
 7. The method of claim 1, wherein aligningthe feature of the user comprises aligning a reflection of the user'seyes with the first of the two or more lines on the display.
 8. Acomputing device configured to scale an object, comprising: a processor;memory in electronic communication with the processor; instructionsstored in the memory, the instructions being executable by the processorto: generate two or more lines on a display of the mobile device; imagethe user with a camera of the mobile device, wherein the image of theuser is displayed on the display of the mobile device; upon determiningthe feature of the user aligns with the first of the two or more lineson the display of the mobile device, capture an image of the user; anddetermine a number of pixels per unit of distance based at least in parton: (i) a number of pixels between a predetermined point on the capturedimage and the feature of the user; and (ii) a predetermined distancebetween a camera of the mobile device and the first of the two or morelines on the display.
 9. The computer device of claim 8, wherein theinstructions are further executable by the processor to: determine adistance associated with the feature of the user based on a productresulting from multiplying a number of pixels associated with thefeature of the user by the determined number of pixels per unit ofdistance in the captured image.
 10. The computer device of claim 9,wherein the instructions are further executable by the processor to:scale a model of the user based on the determined distance associatedwith the feature of the user.
 11. The computer device of claim 8,wherein the instructions are further executable by the processor to:instruct a user to align a feature of the user with a second of the twoor more lines on the display; upon determining the feature of the useraligns with the second of the two or more lines on the display of themobile device, capture a second image of the user.
 12. The computerdevice of claim 11, wherein the instructions are further executable bythe processor to: determine a correction value based on an equivalencybetween calculating a distance associated with the feature of the userin the captured image and calculating a distance associated with thefeature of the user in the second captured image.
 13. The computerdevice of claim 12, wherein the instructions are further executable bythe processor to: scale a model of the user based on the determinedcorrection value.
 14. The computer device of claim 8, wherein thefeature of the user comprises eyes of the user.
 15. A computer-programproduct for scaling an object, the computer-program product comprising anon-transitory computer-readable medium storing instructions thereon,the instructions being executable by a processor to: generate two ormore lines on a display of the mobile device; image the user with acamera of the mobile device, wherein the image of the user is displayedon the display of the mobile device; upon determining the feature of theuser aligns with the first of the two or more lines on the display ofthe mobile device, capture an image of the user; and determine a numberof pixels per unit of distance based at least in part on: (i) a numberof pixels between a predetermined point on the captured image and thefeature of the user; and (ii) a predetermined distance between a cameraof the mobile device and the first of the two or more lines on thedisplay.
 16. The computer-program product of claim 15, wherein theinstructions are further executable by the processor to: determine adistance associated with the feature of the user based on a productresulting from multiplying a number of pixels associated with thefeature of the user by the determined number of pixels per unit ofdistance in the captured image.
 17. The computer-program product ofclaim 16, wherein the instructions are further executable by theprocessor to: scale a model of the user based on the determined distanceassociated with the feature of the user.
 18. The computer-programproduct of claim 15, wherein the instructions are further executable bythe processor to: instruct a user to align a feature of the user with asecond of the two or more lines on the display; upon determining thefeature of the user aligns with the second of the two or more lines onthe display of the mobile device, capture a second image of the user.19. The computer-program product of claim 18, wherein the instructionsare further executable by the processor to: determine a correction valuebased on an equivalency between calculating a distance associated withthe feature of the user in the captured image and calculating a distanceassociated with the feature of the user in the second captured image.20. The computer-program product of claim 19, wherein the instructionsare further executable by the processor to: scale a model of the userbased on the determined correction.